@echo off
chcp 65001 > nul

rem ========================================
rem 若依运销系统一键部署脚本
rem 功能：编译项目 + 启动服务
rem ========================================

title 若依运销系统部署器
color 0B

echo.
echo ==========================================
echo         若依运销系统一键部署器
echo ==========================================
echo.

rem 1. 检查环境
echo 🔍 检查运行环境...

rem 检查Java
where java > nul 2>&1
if %errorlevel% neq 0 (
    echo ❌ 错误：未找到Java环境
    pause
    exit /b 1
) else (
    echo ✅ Java环境正常
)

rem 检查Maven
where mvn > nul 2>&1
if %errorlevel% neq 0 (
    echo ❌ 错误：未找到Maven环境
    pause
    exit /b 1
) else (
    echo ✅ Maven环境正常
)

rem 2. 停止已运行的服务
echo.
echo 🛑 检查并停止已运行的服务...
for /f "tokens=2" %%i in ('tasklist /fi "imagename eq java.exe" /fo csv 2^>nul ^| findstr /i "ruoyi"') do (
    echo 发现运行中的若依服务，正在停止...
    taskkill /pid %%i /f /t > nul 2>&1
)

rem 3. 清理和编译
echo.
echo 🧹 清理项目缓存...
call mvn clean -q
if %errorlevel% neq 0 (
    echo ❌ 清理失败
    pause
    exit /b 1
)

echo.
echo 🔨 编译项目（跳过测试）...
call mvn package -DskipTests -q
if %errorlevel% neq 0 (
    echo ❌ 编译失败，请检查代码
    pause
    exit /b 1
) else (
    echo ✅ 编译成功
)

rem 4. 检查jar包
set "JAR_PATH=%~dp0ruoyi-admin\target\ruoyi-admin.jar"
if not exist "%JAR_PATH%" (
    echo ❌ 错误：编译后未找到jar包
    pause
    exit /b 1
)

rem 5. 创建日志目录
set "LOG_PATH=%~dp0logs"
if not exist "%LOG_PATH%" mkdir "%LOG_PATH%"

rem 6. 启动配置
set JAVA_OPTS=-server -Xms512m -Xmx1024m
set JAVA_OPTS=%JAVA_OPTS% -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseG1GC -XX:MaxGCPauseMillis=200
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=Asia/Shanghai

set APP_OPTS=--spring.profiles.active=prod
set APP_OPTS=%APP_OPTS% --server.port=8080
set APP_OPTS=%APP_OPTS% --logging.file.path=%LOG_PATH%

rem 7. 显示部署信息
echo.
echo ==========================================
echo              部署信息
echo ==========================================
echo 📦 jar包：%JAR_PATH%
echo 📋 日志：%LOG_PATH%
echo 💾 内存：512MB - 1GB
echo 🌐 端口：8080
echo 🔗 地址：http://localhost:8080
echo ==========================================
echo.

echo 🚀 启动若依运销系统...
echo 💡 启动完成后可访问：http://localhost:8080
echo 💡 按 Ctrl+C 可停止服务
echo.

rem 8. 启动应用
java %JAVA_OPTS% -jar "%JAR_PATH%" %APP_OPTS%

rem 9. 退出处理
echo.
if %errorlevel% equ 0 (
    echo ✅ 服务正常退出
) else (
    echo ❌ 服务异常退出，错误码：%errorlevel%
)

echo.
echo 按任意键退出...
pause > nul